#pragma once
#include "Fysics/Renderer/ShaderProgram.h"

namespace Fysics
{
	class OpenGLShaderProgram : public ShaderProgram
	{
	public:
		OpenGLShaderProgram(const Shader* vertex, const Shader* fragment);
		virtual ~OpenGLShaderProgram();

		virtual void Bind() const override;
		virtual void UnBind() const override;

		virtual void ActiveTexture(unsigned int slot) override;

		virtual void UploadUniform(const std::string& name, const glm::mat4& mat4x4) const override;
		virtual void UploadUniform(const std::string& name, const glm::vec3& float3) const override;
		virtual void UploadUniform(const std::string& name, unsigned int uint) const override;
		virtual void UploadUniform(const std::string& name, const glm::vec4& float4) const override;
	};
}